home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / util / gnu / xpdf-0.8-src.lha / xpdf-0.8-src / ltk / LTKApp.h < prev    next >
C/C++ Source or Header  |  1998-11-28  |  4KB  |  127 lines

  1. //========================================================================
  2. //
  3. // LTKApp.h
  4. //
  5. // Copyright 1996 Derek B. Noonburg
  6. //
  7. //========================================================================
  8.  
  9. #ifndef LTKAPP_H
  10. #define LTKAPP_H
  11.  
  12. #ifdef __GNUC__
  13. #pragma interface
  14. #endif
  15.  
  16. #include <stddef.h>
  17. #include <sys/types.h>
  18. #include <sys/time.h>
  19. #if defined(VMS) && defined(__DECCXX) && (__DECCXX_VER  < 50200000)
  20. #include "vms_unix_time.h"
  21. #endif
  22. #include <X11/Xlib.h>
  23. #include <X11/Xresource.h>
  24. #include "gtypes.h"
  25. #include "GString.h"
  26.  
  27. class LTKApp;
  28. class LTKWindow;
  29. class LTKWidget;
  30. class LTKMenu;
  31.  
  32. //------------------------------------------------------------------------
  33. // callback type
  34. //------------------------------------------------------------------------
  35.  
  36. typedef void (*LTKAppKillCbk)(LTKWindow *win);
  37.  
  38. //------------------------------------------------------------------------
  39. // LTKApp
  40. //------------------------------------------------------------------------
  41.  
  42. #define ltkWinTabSize 127
  43.  
  44. struct LTKWinHash {
  45.   Window xwin;
  46.   LTKWindow *win;
  47.   LTKWidget *widget;
  48.   LTKWinHash *next;
  49. };
  50.  
  51. class LTKApp {
  52. public:
  53.  
  54.   //---------- constructor and destructor ----------
  55.  
  56.   LTKApp(char *appName1, XrmOptionDescRec *opts, int *argc, char *argv[]);
  57.  
  58.   ~LTKApp();
  59.  
  60.   //---------- access ----------
  61.  
  62.   Display *getDisplay() { return display; }
  63.   int getScreenNum() { return screenNum; }
  64.   GString *getAppName() { return appName; }
  65.   int getDisplayWidth() { return DisplayWidth(display, screenNum); }
  66.   int getDisplayHeight() { return DisplayHeight(display, screenNum); }
  67.  
  68.   //---------- resources ----------
  69.  
  70.   GString *getStringResource(char *inst, char *def);
  71.   int getIntResource(char *inst, int def);
  72.   GBool getBoolResource(char *inst, GBool def);
  73.   unsigned long getColorResource(char *inst,
  74.                  char *def1, unsigned long def2,
  75.                  XColor *xcol);
  76.   XFontStruct *getFontResource(char *inst,  char *def);
  77.   void getGeometryResource(char *inst, int *x, int *y,
  78.                Guint *width, Guint *height);
  79.  
  80.   //---------- window list ----------
  81.  
  82.   LTKWindow *addWindow(LTKWindow *w);
  83.   LTKWindow *delWindow(LTKWindow *w);
  84.   void registerXWindow(Window xwin, LTKWindow *win, LTKWidget *widget);
  85.   LTKWindow *findWindow(Window xwin, LTKWidget **widget);
  86.  
  87.   //---------- special access ----------
  88.  
  89.   void setGrabWin(LTKWindow *win) { grabWin = win; }
  90.   void setMenu(LTKMenu *menu) { activeMenu = menu; }
  91.   void setRepeatEvent(LTKWidget *repeatWidget1, int repeatDelay1,
  92.               int repeatPeriod1);
  93.   void setKillCbk(LTKAppKillCbk cbk) { killCbk = cbk; }
  94.  
  95.   //---------- event handler ----------
  96.  
  97.   void doEvent(GBool wait);
  98.  
  99. private:
  100.  
  101.   GString *appName;        // application name (for X resources)
  102.   LTKWindow *windows;        // list of windows
  103.   LTKWinHash            // hash table of (X window) -> (LTK
  104.     *winTab[ltkWinTabSize];    //   window/widget) mappings
  105.  
  106.   LTKWindow *grabWin;        // do events only for this window
  107.   LTKMenu *activeMenu;        // currently posted menu
  108.  
  109.   LTKWidget *repeatWidget;    // do repeat events for this widget
  110.   int repeatDelay;        // microseconds before first repeat event
  111.   int repeatPeriod;        // microseconds between repeat events
  112.   GBool firstRepeat;        // set before first repeat event
  113.   struct timeval lastRepeat;    // time of last repeat
  114.  
  115.   Display *display;        // X display
  116.   int screenNum;        // X screen number
  117.   XrmDatabase resourceDB;    // X resource database
  118.   Atom wmDeleteWinAtom;        // atom for WM_DELETE_WINDOW
  119.  
  120.   int pressedBtn;        // button currently pressed
  121.   Time buttonPressTime;        // time of last button press
  122.  
  123.   LTKAppKillCbk killCbk;    // WM_DELETE_WINDOW callback
  124. };
  125.  
  126. #endif
  127.